// src/router/permission.ts
import  type { RouteConfig } from '@/types/routes'

// 模拟获取当前用户角色
export const getCurrentUserRoles = (): string[] => {
  // 实际项目中从登录状态或接口获取
  const userInfo = localStorage.getItem('userInfo')
  if (userInfo) {
    return JSON.parse(userInfo).roles || []
  }
  return []
}

// 检查是否有权限访问路由
export const hasPermission = (route: RouteConfig): boolean => {
  const { meta } = route

  // 不需要权限的路由直接通过
  if (!meta?.requiresAuth) {
    return true
  }

  // 检查角色权限
  if (meta.roles && meta.roles.length > 0) {
    const userRoles = getCurrentUserRoles()
    return userRoles.some(role => meta.roles!.includes(role))
  }

  // 默认需要登录权限
  return !!localStorage.getItem('token')
}

// 过滤有权限的路由
export const filterAccessibleRoutes = (routes: RouteConfig[]): RouteConfig[] => {
  return routes.filter(route => {
    // 检查当前路由是否有权限
    const hasAccess = hasPermission(route)

    // 处理子路由
    if (hasAccess && route.children && route.children.length > 0) {
      route.children = filterAccessibleRoutes(route.children)
      // 如果子路由过滤后为空，且不是重定向路由，则当前路由也不可访问
      if (route.children.length === 0 && !route.redirect) {
        return false
      }
    }

    return hasAccess
  })
}
